using System.Windows;

namespace ASPItalia.ModelVirtualCasting.WPF.DragDrop
{
    /// <summary>
    /// Interface to rappresent target drag'n'drop manager
    /// </summary>
    public interface IDropTargetAdvisor
    {
        /// <summary>
        /// Get or set target drag'n'drop operation
        /// </summary>
        UIElement TargetUI { get; set; }
        /// <summary>
        /// Get if drag'n'drop operation contains valid data
        /// </summary>
        /// <param name="obj">Clipboard dataobject</param>
        /// <returns></returns>
        bool IsValidDataObject(IDataObject obj);
        /// <summary>
        /// Called when drop operation is finished.
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="dropPoint"></param>
        void OnDropCompleted(IDataObject obj, Point dropPoint);
        /// <summary>
        /// Return the element rappresenting visual feedback during drag'n'drop operation
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        UIElement GetVisualFeedback(IDataObject obj);
        /// <summary>
        /// Return the target drop mouse application point
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        Point GetOffsetPoint(IDataObject obj);
    }
}
